/*! Swipebox v1.4.4 | Constantin Saguin csag.co | MIT License | github.com/brutaldesign/swipebox */

;
(function (window, document, $, undefined) {

    $.swipebox = function (elem, options) {

        // Default options
        var ui, defaults = {
            useCSS: true,
            useSVG: true,
            initialIndexOnArray: 0,
            removeBarsOnMobile: true,
            hideCloseButtonOnMobile: false,
            hideBarsDelay: 3000,
            videoMaxWidth: 1140,
            vimeoColor: 'cccccc',
            beforeOpen: null,
            afterOpen: null,
            afterClose: null,
            afterMedia: null,
            nextSlide: null,
            prevSlide: null,
            loopAtEnd: false,
            autoplayVideos: false,
            queryStringData: {},
            toggleClassOnLoad: ''
        },
        plugin = this,
          elements = [],
          // slides array [ { href:'...', title:'...' }, ...],
          $elem,
          selector = elem.selector,
          isMobile = navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i),
          isTouch = isMobile !== null || document.createTouch !== undefined || ('ontouchstart' in window) || ('onmsgesturechange' in window) || navigator.msMaxTouchPoints,
          supportSVG = !!document.createElementNS && !!document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGRect,
          winWidth = window.innerWidth ? window.innerWidth : $(window).width(),
          winHeight = window.innerHeight ? window.innerHeight : $(window).height(),
          currentX = 0,
          /* jshint multistr: true */
          html = '<div id="swipebox-overlay"><div id="swipebox-container"><div id="swipebox-slider"></div>\n\
  <div id="swipebox-top-bar" class="visible-bars"><div id="swipebox-title"></div>\</div><div id="swipebox-bottom-bar">\n\
<div id="swipebox-arrows"><a id="swipebox-prev"></a><a id="swipebox-next"></a></div></div><a id="swipebox-close"></a></div></div>';

        plugin.settings = {};

        $.swipebox.close = function () {
            ui.closeSlide();
        };

        $.swipebox.extend = function () {
            return ui;
        };

        plugin.init = function () {

            plugin.settings = $.extend({},
              defaults, options);

            if ($.isArray(elem)) {

                elements = elem;
                ui.target = $(window);
                ui.init(plugin.settings.initialIndexOnArray);

            } else {

                $(document).on('click', selector,
                  function (event) {

                      // console.log( isTouch );
                      if (event.target.parentNode.className === 'slide current') {

                          return false;
                      }

                      if (!$.isArray(elem)) {
                          ui.destroy();
                          $elem = $(selector);
                          ui.actions();
                      }

                      elements = [];
                      var index, relType, relVal;

                      // Allow for HTML5 compliant attribute before legacy use of rel
                      if (!relVal) {
                          relType = 'data-rel';
                          relVal = $(this).attr(relType);
                      }

                      if (!relVal) {
                          relType = 'rel';
                          relVal = $(this).attr(relType);
                      }

                      if (relVal && relVal !== '' && relVal !== 'nofollow') {
                          $elem = $(selector).filter('[' + relType + '="' + relVal + '"]');
                      } else {
                          $elem = $(selector);
                      }

                      $elem.each(function () {

                          var title = null,
                            href = null;

                          if ($(this).attr('title')) {
                              title = $(this).attr('title');
                          }

                          if ($(this).attr('href')) {
                              href = $(this).attr('href');
                          }

                          elements.push({
                              href: href,
                              title: title
                          });
                      });

                      index = $elem.index($(this));
                      event.preventDefault();
                      event.stopPropagation();
                      ui.target = $(event.target);
                      ui.init(index);
                  });
            }
        };

        ui = {
            /**
             * Initiate Swipebox
             */
            init: function (index) {
                if (plugin.settings.beforeOpen) {
                    plugin.settings.beforeOpen();
                }
                this.target.trigger('swipebox-start');
                $.swipebox.isOpen = true;
                this.build();
                this.openSlide(index);
                this.openMedia(index);
                this.preloadMedia(index + 1);
                this.preloadMedia(index - 1);
                if (plugin.settings.afterOpen) {
                    plugin.settings.afterOpen(index);
                }
            },
            /**
             * Built HTML containers and fire main functions
             */
            build: function () {
                var $this = this,
                  bg;

                $('body').append(html);

                if (supportSVG && plugin.settings.useSVG === true) {
                    bg = $('#swipebox-close').css('background-image');
                    bg = bg.replace('png', 'svg');
                    $('#swipebox-prev, #swipebox-next, #swipebox-close').css({
                        'background-image': bg
                    });
                }

                if (isMobile && plugin.settings.removeBarsOnMobile) {
                    $('#swipebox-bottom-bar, #swipebox-top-bar').remove();
                }

                $.each(elements,
                  function () {
                      $('#swipebox-slider').append('<div class="slide"></div>');
                  });

                $this.setDim();
                $this.actions();

                if (isTouch) {
                    $this.gesture();
                }

                // Devices can have both touch and keyboard input so always allow key events
                $this.keyboard();

                $this.animBars();
                $this.resize();

            },
            /**
             * Set dimensions depending on windows width and height
             */
            setDim: function () {

                var width, height, sliderCss = {};

                // Reset dimensions on mobile orientation change
                if ('onorientationchange' in window) {

                    window.addEventListener('orientationchange',
                      function () {
                          if (window.orientation === 0) {
                              width = winWidth;
                              height = winHeight;
                          } else if (window.orientation === 90 || window.orientation === -90) {
                              width = winHeight;
                              height = winWidth;
                          }
                      },
                      false);

                } else {

                    width = window.innerWidth ? window.innerWidth : $(window).width();
                    height = window.innerHeight ? window.innerHeight : $(window).height();
                }

                sliderCss = {
                    width: width,
                    height: height
                };

                $('#swipebox-overlay').css(sliderCss);

            },
            /**
             * Reset dimensions on window resize envent
             */
            resize: function () {
                var $this = this;

                $(window).resize(function () {
                    $this.setDim();
                }).resize();
            },
            /**
             * Check if device supports CSS transitions
             */
            supportTransition: function () {

                var prefixes = 'transition WebkitTransition MozTransition OTransition msTransition KhtmlTransition'.split(' '),
                  i;

                for (i = 0; i < prefixes.length; i++) {
                    if (document.createElement('div').style[prefixes[i]] !== undefined) {
                        return prefixes[i];
                    }
                }
                return false;
            },
            /**
             * Check if CSS transitions are allowed (options + devicesupport)
             */
            doCssTrans: function () {
                if (plugin.settings.useCSS && this.supportTransition()) {
                    return true;
                }
            },
            /**
             * Touch navigation
             */
            gesture: function () {

                var $this = this,
                  index, hDistance, vDistance, hDistanceLast, vDistanceLast, hDistancePercent, vSwipe = false,
                  hSwipe = false,
                  hSwipMinDistance = 10,
                  vSwipMinDistance = 50,
                  startCoords = {},
                  endCoords = {},
                  bars = $('#swipebox-top-bar, #swipebox-bottom-bar'),
                  slider = $('#swipebox-slider');

                bars.addClass('visible-bars');
                $this.setTimeout();

                $('body').bind('touchstart',
                  function (event) {

                      $(this).addClass('touching');
                      index = $('#swipebox-slider .slide').index($('#swipebox-slider .slide.current'));
                      endCoords = event.originalEvent.targetTouches[0];
                      startCoords.pageX = event.originalEvent.targetTouches[0].pageX;
                      startCoords.pageY = event.originalEvent.targetTouches[0].pageY;

                      $('#swipebox-slider').css({
                          '-webkit-transform': 'translate3d(' + currentX + '%, 0, 0)',
                          'transform': 'translate3d(' + currentX + '%, 0, 0)'
                      });

                      $('.touching').bind('touchmove',
                        function (event) {
                            event.preventDefault();
                            event.stopPropagation();
                            endCoords = event.originalEvent.targetTouches[0];

                            if (!hSwipe) {
                                vDistanceLast = vDistance;
                                vDistance = endCoords.pageY - startCoords.pageY;
                                if (Math.abs(vDistance) >= vSwipMinDistance || vSwipe) {
                                    var opacity = 0.75 - Math.abs(vDistance) / slider.height();

                                    slider.css({
                                        'top': vDistance + 'px'
                                    });
                                    slider.css({
                                        'opacity': opacity
                                    });

                                    vSwipe = true;
                                }
                            }

                            hDistanceLast = hDistance;
                            hDistance = endCoords.pageX - startCoords.pageX;
                            hDistancePercent = hDistance * 100 / winWidth;

                            if (!hSwipe && !vSwipe && Math.abs(hDistance) >= hSwipMinDistance) {
                                $('#swipebox-slider').css({
                                    '-webkit-transition': '',
                                    'transition': ''
                                });
                                hSwipe = true;
                            }

                            if (hSwipe) {

                                // swipe left
                                if (0 < hDistance) {

                                    // first slide
                                    if (0 === index) {
                                        // console.log( 'first' );
                                        $('#swipebox-overlay').addClass('leftSpringTouch');
                                    } else {
                                        // Follow gesture
                                        $('#swipebox-overlay').removeClass('leftSpringTouch').removeClass('rightSpringTouch');
                                        $('#swipebox-slider').css({
                                            '-webkit-transform': 'translate3d(' + (currentX + hDistancePercent) + '%, 0, 0)',
                                            'transform': 'translate3d(' + (currentX + hDistancePercent) + '%, 0, 0)'
                                        });
                                    }

                                    // swipe rught
                                } else if (0 > hDistance) {

                                    // last Slide
                                    if (elements.length === index + 1) {
                                        // console.log( 'last' );
                                        $('#swipebox-overlay').addClass('rightSpringTouch');
                                    } else {
                                        $('#swipebox-overlay').removeClass('leftSpringTouch').removeClass('rightSpringTouch');
                                        $('#swipebox-slider').css({
                                            '-webkit-transform': 'translate3d(' + (currentX + hDistancePercent) + '%, 0, 0)',
                                            'transform': 'translate3d(' + (currentX + hDistancePercent) + '%, 0, 0)'
                                        });
                                    }

                                }
                            }
                        });

                      return false;

                  }).bind('touchend',
                  function (event) {
                      event.preventDefault();
                      event.stopPropagation();

                      $('#swipebox-slider').css({
                          '-webkit-transition': '-webkit-transform 0.4s ease',
                          'transition': 'transform 0.4s ease'
                      });

                      vDistance = endCoords.pageY - startCoords.pageY;
                      hDistance = endCoords.pageX - startCoords.pageX;
                      hDistancePercent = hDistance * 100 / winWidth;

                      // Swipe to bottom to close
                      if (vSwipe) {
                          vSwipe = false;
                          if (Math.abs(vDistance) >= 2 * vSwipMinDistance && Math.abs(vDistance) > Math.abs(vDistanceLast)) {
                              var vOffset = vDistance > 0 ? slider.height() : -slider.height();
                              slider.animate({
                                  top: vOffset + 'px',
                                  'opacity': 0
                              },
                                300,
                                function () {
                                    $this.closeSlide();
                                });
                          } else {
                              slider.animate({
                                  top: 0,
                                  'opacity': 1
                              },
                                300);
                          }

                      } else if (hSwipe) {

                          hSwipe = false;

                          // swipeLeft
                          if (hDistance >= hSwipMinDistance && hDistance >= hDistanceLast) {

                              $this.getPrev();

                              // swipeRight
                          } else if (hDistance <= -hSwipMinDistance && hDistance <= hDistanceLast) {

                              $this.getNext();
                          }

                      } else { // Top and bottom bars have been removed on touchable devices
                          // tap
                          if (!bars.hasClass('visible-bars')) {
                              $this.showBars();
                              $this.setTimeout();
                          } else {
                              $this.clearTimeout();
                              $this.hideBars();
                          }
                      }

                      $('#swipebox-slider').css({
                          '-webkit-transform': 'translate3d(' + currentX + '%, 0, 0)',
                          'transform': 'translate3d(' + currentX + '%, 0, 0)'
                      });

                      $('#swipebox-overlay').removeClass('leftSpringTouch').removeClass('rightSpringTouch');
                      $('.touching').off('touchmove').removeClass('touching');

                  });
            },
            /**
             * Set timer to hide the action bars
             */
            setTimeout: function () {
                if (plugin.settings.hideBarsDelay > 0) {
                    var $this = this;
                    $this.clearTimeout();
                    $this.timeout = window.setTimeout(function () {
                        $this.hideBars();
                    },
                      plugin.settings.hideBarsDelay);
                }
            },
            /**
             * Clear timer
             */
            clearTimeout: function () {
                window.clearTimeout(this.timeout);
                this.timeout = null;
            },
            /**
             * Show navigation and title bars
             */
            showBars: function () {
                var bars = $('#swipebox-top-bar, #swipebox-bottom-bar');
                if (this.doCssTrans()) {
                    bars.addClass('visible-bars');
                } else {
                    $('#swipebox-top-bar').animate({
                        top: 0
                    },
                      500);
                    $('#swipebox-bottom-bar').animate({
                        bottom: 0
                    },
                      500);
                    setTimeout(function () {
                        bars.addClass('visible-bars');
                    },
                      1000);
                }
            },
            /**
             * Hide navigation and title bars
             */
            hideBars: function () {
                var bars = $('#swipebox-top-bar, #swipebox-bottom-bar');
                if (this.doCssTrans()) {
                    //                    bars.removeClass('visible-bars');
                } else {
                    $('#swipebox-top-bar').animate({
                        top: '-50px'
                    },
                      500);
                    $('#swipebox-bottom-bar').animate({
                        bottom: '-50px'
                    },
                      500);
                    setTimeout(function () {
                        //                        bars.removeClass('visible-bars');
                    },
                      1000);
                }
            },
            /**
             * Animate navigation and top bars
             */
            animBars: function () {
                var $this = this,
                  bars = $('#swipebox-top-bar, #swipebox-bottom-bar');

                bars.addClass('visible-bars');
                $this.setTimeout();

                $('#swipebox-slider').click(function () {
                    if (!bars.hasClass('visible-bars')) {
                        $this.showBars();
                        $this.setTimeout();
                    }
                });

                $('#swipebox-bottom-bar').hover(function () {
                    $this.showBars();
                    bars.addClass('visible-bars');
                    $this.clearTimeout();

                },
                  function () {
                      if (plugin.settings.hideBarsDelay > 0) {
                          //                        bars.removeClass('visible-bars');
                          $this.setTimeout();
                      }

                  });
            },
            /**
             * Keyboard navigation
             */
            keyboard: function () {
                var $this = this;
                $(window).bind('keyup',
                  function (event) {
                      event.preventDefault();
                      event.stopPropagation();

                      if (event.keyCode === 37) {

                          $this.getPrev();

                      } else if (event.keyCode === 39) {

                          $this.getNext();

                      } else if (event.keyCode === 27) {

                          $this.closeSlide();
                      }
                  });
            },
            /**
             * Navigation events : go to next slide, go to prevous slide and close
             */
            actions: function () {
                var $this = this,
                  action = 'touchend click'; // Just detect for both event types to allow for multi-input
                if (elements.length < 2) {

                    $('#swipebox-bottom-bar').hide();

                    if (undefined === elements[1]) {
                        $('#swipebox-top-bar').hide();
                    }

                } else {
                    $('#swipebox-prev').bind(action,
                      function (event) {
                          event.preventDefault();
                          event.stopPropagation();
                          $this.getPrev();
                          $this.setTimeout();
                      });

                    $('#swipebox-next').bind(action,
                      function (event) {
                          event.preventDefault();
                          event.stopPropagation();
                          $this.getNext();
                          $this.setTimeout();
                      });
                }

                $('#swipebox-close').bind(action,
                  function () {
                      $this.closeSlide();
                  });
            },
            /**
             * Set current slide
             */
            setSlide: function (index, isFirst) {

                isFirst = isFirst || false;

                var slider = $('#swipebox-slider');

                currentX = -index * 100;

                if (this.doCssTrans()) {
                    slider.css({
                        '-webkit-transform': 'translate3d(' + (-index * 100) + '%, 0, 0)',
                        'transform': 'translate3d(' + (-index * 100) + '%, 0, 0)'
                    });
                } else {
                    slider.animate({
                        left: (-index * 100) + '%'
                    });
                }
                $('#swipebox-slider .slide').removeClass('current');
                $('#swipebox-slider .slide').eq(index).addClass('current');
                this.setTitle(index);

                if (isFirst) {
                    slider.fadeIn();
                }

                $('#swipebox-prev, #swipebox-next').removeClass('disabled');

                if (index === 0) {
                    $('#swipebox-prev').addClass('disabled');
                } else if (index === elements.length - 1 && plugin.settings.loopAtEnd !== true) {
                    $('#swipebox-next').addClass('disabled');
                }
            },
            /**
             * Open slide
             */
            openSlide: function (index) {
                $('html').addClass('swipebox-html');
                if (isTouch) {
                    $('html').addClass('swipebox-touch');

                    if (plugin.settings.hideCloseButtonOnMobile) {
                        $('html').addClass('swipebox-no-close-button');
                    }
                } else {
                    $('html').addClass('swipebox-no-touch');
                }
                $(window).trigger('resize'); // fix scroll bar visibility on desktop
                this.setSlide(index, true);
            },
            /**
             * Set a time out if the media is a video
             */
            preloadMedia: function (index) {
                var $this = this,
                  src = null;

                if (elements[index] !== undefined) {
                    src = elements[index].href;
                }

                if (!$this.isVideo(src)) {
                    setTimeout(function () {
                        $this.openMedia(index);
                    },
                      1000);
                } else {
                    $this.openMedia(index);
                }
            },
            /**
             * Open
             */
            openMedia: function (index) {
                var $this = this,
                  src, slide;

                if (elements[index] !== undefined) {
                    src = elements[index].href;
                }

                if (index < 0 || index >= elements.length) {
                    return false;
                }

                slide = $('#swipebox-slider .slide').eq(index);

                if (!$this.isVideo(src)) {
                    slide.addClass('slide-loading');
                    $this.loadMedia(src,
                      function () {
                          slide.removeClass('slide-loading');
                          slide.html(this);

                          if (plugin.settings.afterMedia) {
                              plugin.settings.afterMedia(index);
                          }
                      });
                } else {
                    slide.html($this.getVideo(src));

                    if (plugin.settings.afterMedia) {
                        plugin.settings.afterMedia(index);
                    }
                }

            },
            /**
             * Set link title attribute as caption
             */
            setTitle: function (index) {
                var title = null;
                $('#swipebox-title').empty();
                if (elements[index] !== undefined) {
                    title = elements[index].title;
                }
                if (title) {
                    $('#swipebox-top-bar').show();
                    $('#swipebox-title').append(title);
                } else {
                    $('#swipebox-top-bar').hide();
                }
            },
            /**
             * Check if the URL is a video
             */
            isVideo: function (src) {
                if (src) {
                    if (src.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/) || src.match(/vimeo\.com\/([0-9]*)/) || src.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/)) {
                        return true;
                    }

                    if (src.toLowerCase().indexOf('swipeboxvideo=1') >= 0) {

                        return true;
                    }
                }

            },
            /**
             * Parse URI querystring and:
             * - overrides value provided via dictionary
             * - rebuild it again returning a string
             */
            parseUri: function (uri, customData) {
                var a = document.createElement('a'),
                  qs = {};

                // Decode the URI
                a.href = decodeURIComponent(uri);

                // QueryString to Object
                if (a.search) {
                    qs = JSON.parse('{"' + a.search.toLowerCase().replace('?', '').replace(/&/g, '","').replace(/=/g, '":"') + '"}');
                }

                // Extend with custom data
                if ($.isPlainObject(customData)) {
                    qs = $.extend(qs, customData, plugin.settings.queryStringData); // The dev has always the final word
                }

                // Return querystring as a string
                return $.map(qs,
                  function (val, key) {
                      if (val && val > '') {
                          return encodeURIComponent(key) + '=' + encodeURIComponent(val);
                      }
                  }).join('&');
            },
            /**
             * Get video iframe code from URL
             */
            getVideo: function (url) {
                var iframe = '',
                  youtubeUrl = url.match(/((?:www\.)?youtube\.com|(?:www\.)?youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/),
                  youtubeShortUrl = url.match(/(?:www\.)?youtu\.be\/([a-zA-Z0-9\-_]+)/),
                  vimeoUrl = url.match(/(?:www\.)?vimeo\.com\/([0-9]*)/),
                  qs = '';
                if (youtubeUrl || youtubeShortUrl) {
                    if (youtubeShortUrl) {
                        youtubeUrl = youtubeShortUrl;
                    }
                    qs = ui.parseUri(url, {
                        'autoplay': (plugin.settings.autoplayVideos ? '1' : '0'),
                        'v': ''
                    });
                    iframe = '<iframe width="560" height="315" src="//' + youtubeUrl[1] + '/embed/' + youtubeUrl[2] + '?' + qs + '" frameborder="0" allowfullscreen></iframe>';

                } else if (vimeoUrl) {
                    qs = ui.parseUri(url, {
                        'autoplay': (plugin.settings.autoplayVideos ? '1' : '0'),
                        'byline': '0',
                        'portrait': '0',
                        'color': plugin.settings.vimeoColor
                    });
                    iframe = '<iframe width="560" height="315"  src="//player.vimeo.com/video/' + vimeoUrl[1] + '?' + qs + '" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';

                } else {
                    iframe = '<iframe width="560" height="315" src="' + url + '" frameborder="0" allowfullscreen></iframe>';
                }

                return '<div class="swipebox-video-container" style="max-width:' + plugin.settings.videoMaxWidth + 'px"><div class="swipebox-video">' + iframe + '</div></div>';
            },
            /**
             * Load image
             */
            loadMedia: function (src, callback) {
                // Inline content
                if (src.trim().indexOf('#') === 0) {
                    callback.call($('<div>', {
                        'class': 'swipebox-inline-container'
                    }).append($(src).clone().toggleClass(plugin.settings.toggleClassOnLoad)));
                }
                // Everything else
                else {
                    if (!this.isVideo(src)) {
                        var img = $('<img>').on('load',
                          function () {
                              callback.call(img);
                          });

                        img.attr('src', src);
                    }
                }
            },
            /**
             * Get next slide
             */
            getNext: function () {
                var $this = this,
                  src, index = $('#swipebox-slider .slide').index($('#swipebox-slider .slide.current'));
                if (index + 1 < elements.length) {

                    src = $('#swipebox-slider .slide').eq(index).contents().find('iframe').attr('src');
                    $('#swipebox-slider .slide').eq(index).contents().find('iframe').attr('src', src);
                    index++;
                    $this.setSlide(index);
                    $this.preloadMedia(index + 1);
                    if (plugin.settings.nextSlide) {
                        plugin.settings.nextSlide(index);
                    }
                } else {

                    if (plugin.settings.loopAtEnd === true) {
                        src = $('#swipebox-slider .slide').eq(index).contents().find('iframe').attr('src');
                        $('#swipebox-slider .slide').eq(index).contents().find('iframe').attr('src', src);
                        index = 0;
                        $this.preloadMedia(index);
                        $this.setSlide(index);
                        $this.preloadMedia(index + 1);
                        if (plugin.settings.nextSlide) {
                            plugin.settings.nextSlide(index);
                        }
                    } else {
                        $('#swipebox-overlay').addClass('rightSpring');
                        setTimeout(function () {
                            $('#swipebox-overlay').removeClass('rightSpring');
                        },
                          500);
                    }
                }
            },
            /**
             * Get previous slide
             */
            getPrev: function () {
                var index = $('#swipebox-slider .slide').index($('#swipebox-slider .slide.current')),
                  src;
                if (index > 0) {
                    src = $('#swipebox-slider .slide').eq(index).contents().find('iframe').attr('src');
                    $('#swipebox-slider .slide').eq(index).contents().find('iframe').attr('src', src);
                    index--;
                    this.setSlide(index);
                    this.preloadMedia(index - 1);
                    if (plugin.settings.prevSlide) {
                        plugin.settings.prevSlide(index);
                    }
                } else {
                    $('#swipebox-overlay').addClass('leftSpring');
                    setTimeout(function () {
                        $('#swipebox-overlay').removeClass('leftSpring');
                    },
                      500);
                }
            },
            /* jshint unused:false */
            nextSlide: function (index) {
                // Callback for next slide
            },
            prevSlide: function (index) {
                // Callback for prev slide
            },
            /**
             * Close
             */
            closeSlide: function () {
                $('html').removeClass('swipebox-html');
                $('html').removeClass('swipebox-touch');
                $(window).trigger('resize');
                this.destroy();
            },
            /**
             * Destroy the whole thing
             */
            destroy: function () {
                $(window).unbind('keyup');
                $('body').unbind('touchstart');
                $('body').unbind('touchmove');
                $('body').unbind('touchend');
                $('#swipebox-slider').unbind();
                $('#swipebox-overlay').remove();

                if (!$.isArray(elem)) {
                    elem.removeData('_swipebox');
                }

                if (this.target) {
                    this.target.trigger('swipebox-destroy');
                }

                $.swipebox.isOpen = false;

                if (plugin.settings.afterClose) {
                    plugin.settings.afterClose();
                }
            }
        };
        plugin.init();
    };

    $.fn.swipebox = function (options) {
        if (!$.data(this, '_swipebox')) {
            var swipebox = new $.swipebox(this, options);
            this.data('_swipebox', swipebox);
        }
        return this.data('_swipebox');

    };
}(window, document, jQuery));